﻿#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

//int Add(int x, int y)
//{
//	return x + y;
//}
//
//
//int main()
//{
//	int (*pf)(int, int) = Add;
//
//	printf("%d\n", pf(1, 2));
//	printf("%d\n", (*pf)(1, 2));
//	printf("%d\n", (*Add)(1, 2));
//
//	return 0;
//}

//#include<string.h>
//
//int isRotate(char* p1, char* p2)
//{
//	int len1 = strlen(p1);
//	int len2 = strlen(p2);
//	if (len1 != len2)
//	{
//		return 0;
//	}
//	else
//	{
//		while (len1--)
//		{
//			char head = p1[0];
//
//			int i = 0;
//			for (i = 0; i < len2 - 1; i++)
//			{
//				char temp = p1[i];
//				p1[i] = p1[i + 1];
//				p1[i + 1] = temp;
//			}
//			p1[i] = head;
//
//			if (strcmp(p1, p2) == 0)
//			{
//				return 1;
//			}
//		}
//		
//	}
//	return 0;
//}
//
//int main()
//{
//	char arr1[] = "AABCD";
//	char arr2[] = "BCDAA";
//
//	int ret = isRotate(arr1,arr2);
//
//	printf("%d\n", ret);
//
//
//	return 0;
//}

//int isExisit(int num, int arr[3][3], int* row, int* col)
//{
//	int i = 0;
//	int j = *col - 1;
//	while (i < *row && j >= 0)
//	{
//		if (arr[i][j] > num)
//		{
//			j--;
//		}
//		else if (arr[i][j] < num)
//		{
//			i++;
//		}
//		else
//		{
//			*row = i;
//			*col = j;
//			return 1;
//		}
//	}
//
//	return 0;
//}
//
//
//int main()
//{
//	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
//
//	int x = 3;
//	int y = 3;
//
//	int num = 7;
//
//	if (isExisit(num, arr, &x, &y))
//	{
//		printf("下标为：%d %d\n", x, y);
//	}
//	else
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}


//int main()
//{
//	int arr[3] = { 1,2,3 };
//
//	printf("%p\n", arr);
//
//	printf("%p\n", &arr[0]);
//
//	printf("%p\n", &arr);
//
//	return 0;
//}

//int main()
//{
//	int arr[3] = { 1,2,3 };
//
//	printf("%p\n", arr);
//	printf("%p\n", &arr[0]);
//	printf("%p\n", &arr);
//
//	printf("%p\n", arr + 1);
//	printf("%p\n", &arr[0] + 1);
//	printf("%p\n", &arr + 1);
//	return 0;
//}

//void print(int arr[3][3], int row, int col)
//{
//	for (int i = 0; i < row; i++)
//	{
//		for (int j = 0; j < col; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}

//void print(int(*arr)[3], int row, int col)
//{
//	for (int i = 0; i < row; i++)
//	{
//		for (int j = 0; j < col; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}
//int main()
//{
//	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
//	print(arr, 3, 3);
//	return 0;
//}

//void test(char** p)
//{
//
//}
//int main()
//{
//	char c = 'b';
//	char* pc = &c;
//	char** ppc = &pc;
//	char* arr[10];
//	test(&pc);//一级指针变量的地址
//	test(ppc);//二级指针变量
//	test(arr);//指针数组的数组名
//	return 0;
//}

//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int (*pf)(int, int) = &Add;
//	//int (*pf)(int, int) = Add;
//
//	printf("%d\n", (*pf)(2, 3));
//	printf("%d\n", pf(2, 3));
//	printf("%d\n", (*****pf)(2, 3));
//
//	return 0;
//}

//int Add(int x, int y)
//{
//	return x + y;
//}
//int Sub(int x, int y)
//{
//	return x - y;
//}
//int Mul(int x, int y)
//{
//	return x * y;
//}
//int Div(int x, int y)
//{
//	return x / y;
//}
//int main()
//{
//	int(*pf[])(int, int) = { Add, Sub, Mul, Div };
//	for (int i = 0; i < 4; i++)
//	{
//		printf("%d\n", pf[i](8, 4));
//	}
//	return 0;
//}


#include <stdio.h>
int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}
int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
	while (input)
	{
		printf("*************************\n");
		printf("*****1:add    2:sub******\n");
		printf("*****3:mul    4:div******\n");
		printf("*************************\n");
		printf("请选择：");
		scanf("%d", &input);
		if ((input <= 4 && input >= 1))
		{
			printf("输入操作数：");
			scanf("%d %d", &x, &y);
			ret = (*p[input])(x, y);
		}
		else if (input == 0)
		{
			printf("退出\n");
			continue;
		}
		else
		{
			printf("输入有误\n");
		}
		printf("ret = %d\n", ret);
	}
	return 0;
}